草庐IT

C++ 指向 vector 的指针

全部标签

c++ - 在 C++ 中自初始化为 nullptr 的普通原始指针

我喜欢C++11中的新指针类型,但有时我仍然需要原始指针。然而,让我对C++中的“原始”类型越来越难过的是,它们习惯于在未给出显式值时初始化为未定义。随着我更频繁地使用std::shared_ptr等,将原始指针初始化为null的需要感觉越来越脆弱和不必要。我在说:classfoo{...std::shared_ptrpb;//Initiallynullinwhateverconstructor.std::unique_ptrpd;//Likewise.std::weak_ptrpg;//Andagain.lar*pr;//Uh-oh!Whoknowswhatthisis?Better

C++ 指向 vector 的指针

我必须将元素插入到指向vector的指针中。我已经编写了以下代码,但它给出了段错误。有人可以指出此代码中的错误是什么,或者我们如何替代地执行此操作。intmain(){vector*te;te->push_back(10);coutsize() 最佳答案 你永远不会分配vector:vector*te=newvector;此外,您不需要动态分配。更简洁的方法是使用自动存储:intmain(){vectorte;te.push_back(10);cout 关于C++指向vector的指针,

c++ - std::vector<A> error C2582: 'operator =' 函数在

我使用简单的vectorpush_back到类型A的对象并收到此错误,这是我的代码:classA{public:A(inta,intb,intc);};#include"A.h"................std::vector*vec_objects=newstd::vector();while(....somecondition...){Aa(1,2,3)vec_objects->push_back(a);}出现这个错误:c:\programfiles\microsoftvisualstudio9.0\vc\include\xutility(3159):errorC2582:'

c++ - 为什么删除指向指针 vector 的指针会导致指针无效?

编辑:感谢您的回答!我用std::string返回类型声明了tellSomething方法,而它应该是void!我把自己绊倒了,责怪可怜的无辜的delete运算符(operator):)!让我们考虑一个指向动态分配的vector的指针,它包含指向动态分配的对象的指针://Createthevectorofpointersstd::vector*v=newstd::vector;//CreatetwoobjectsA*a1=newA;A*a2=newA;//Populatethevectorv->push_back(a1);v->push_back(a2);//Deletethevect

c++ - vector 、迭代器和 std::find

有没有办法在不同的vector中使用不同类型的迭代器?或者,是否有一个函数将vector中元素的位置作为整数返回?std::vector::iteratorit;//Iterator//monsterQueueisavectorit=std::find(bot.monsterQueue.begin(),bot.monsterQueue.end(),object);//Checkdowehavetheobjectinthequeueif(it!=bot.monsterQueue.end())//Ifwedohaveit{bot.monsterDists.at(it)=mobDist;//

c++ - 这个指针算法是如何工作的?

#includeintmain(void){unsigneda[3][4]={{2,23,6,7},{8,5,1,4},{12,15,3,9}};printf("%u",*((int*)(((char*)a)+4)));return0;}我机器的输出是a[0][1]的值,即23。有人能解释一下这是如何工作的吗?编辑:回滚到旧的yucky代码,正是呈现给我的内容:P 最佳答案 所以你的数组在内存中是这样的:2,23,6,7,8...它所做的是将数组转换为char*,它允许您访问单个字节,它指向此处:2,23,6,7,8...^然后它添

c++ - 我可以在 STL 的 map 中使用 vector 吗?

我可以声明这样的map吗map>mymap;我认为它是适用的。然而,它显示不是。我试过了map*>mymap;然后就OK了这是什么规则? 最佳答案 你需要一个额外的空间:map>mymap;^seetheextraspace没有额外的空间,>>被解析为右移运算符。在C++0x中修改了规则,不再需要额外的空间。一些编译器(例如VisualC++2008及更高版本)已经不需要额外的空间。 关于c++-我可以在STL的map中使用vector吗?,我们在StackOverflow上找到一个类似

c++ - 指向 C++ 字符串的指针

在下面的代码中,我在change()函数中使用了一个指向C++字符串的指针。在处理指向字符串的指针时,是否可以使用字符串类的运算符?例如,at()适用于[]运算符,但是有什么方法可以使用[]运算符吗?#include#includeusingnamespacestd;voidchange(string*s){s->at(0)='t';s->at(1)='w';//s->[2]='o';doesnotwork//*s[2]='o';doesnotwork}intmain(intargc,char**argv){strings1="one";change(&s1);cout

c++ - 神秘的 C++ "thing"(函数指针)

此语法在C++中的作用是什么?谁能指出技术术语,以便我查看是否在我的文本中找到任何内容?起初我以为它是一个原型(prototype),但后来=和(*fn)让我失望了......这是我的例子:void(*fn)(int&,int&)=x; 最佳答案 可以改写为typedefvoid(*T)(int&,int&);Tfn=x;第二个语句很明显,它应该已经解决了=x;问题。在第一个语句中,我们将T作为类型void(*)(int&,int&)的同义词,这意味着:指向函数的指针((*…))返回void并采用2个参数:int&、int&。

c++ - 将指针容器转换为智能指针?

是否有一种简洁、通用的方法来转换常规/哑指针的std容器(例如vector):vector例如,boost::shared_ptr?:vector>我想我可以使用vector的范围构造函数来完成它:vectorvec_a;...vector>vec_b(vec_a.begin(),vec_a.end());但是拒绝编译(VisualStudio2008)。编辑:测试代码:voidtest(){vectorvec_a;vector>vec_b(vec_a.begin(),vec_a.end());}编译错误:1>c:\ProgramFiles(x86)\MicrosoftVisualSt